package cl.tinet.trainee.salas.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * Clase usuario.
 * 
 * 
 * @author Naht-Sams
 */
@Entity
@Table(name = "USUARIO")
public class Usuario implements Serializable {
    /**
     * Version serial.
     */
    private static long serialVersionUID = 1L;
    /**
     * Variable que contendra el nombre de usuario. Que iniciara session.
     */
    @Id
    @Column(name = "username")
    private String username;
    /**
     * Contendra el o los nombres del usuario.

     */

    @Column(name = "nombres")
    private String nombres;
    /**
     * Password del usuario.
     */
    @Column(name = "password")
    private String password;
    /**
     * Tipo de usuario. 0 Admin. 1 Normal.
     */
    @Column(name = "tipo_usuario")
    private byte tipoUsuario;
    /**
     * 0 No activo. 1 Si Activo.
     */
    @Column(name = "activo")
    private boolean activo;

    /**
     * Allows to get the username attribute value.
     * 
     * @return the username value.
     */
    public String getUsername() {
        return username;
    }

    /**
     * Allows to set the username attribute value.
     * 
     * @param username
     *            new value for username attribute.
     */
    public void setUsername(String username) {
        this.username = username;
    }

    /**
     * Allows to get the nombres attribute value.
     * 
     * @return the nombres value.
     */
    public String getNombres() {
        return nombres;
    }

    /**
     * Allows to set the nombres attribute value.
     * 
     * @param nombres
     *            new value for nombres attribute.
     */
    public void setNombres(String nombres) {
        this.nombres = nombres;
    }

    /**
     * Allows to get the password attribute value.
     * 
     * @return the password value.
     */
    public String getPassword() {
        return password;
    }

    /**
     * Allows to set the password attribute value.
     * 
     * @param password
     *            new value for password attribute.
     */
    public void setPassword(String password) {
        this.password = password;
    }



    /**
     * Allows to get the tipoUsuario attribute value.
     * @return the tipoUsuario value.
     */
    public byte getTipoUsuario() {
        return tipoUsuario;
    }

    /**
     * Allows to set the tipoUsuario attribute value.
     * 
     * @param tipoUsuario
     *            new value for tipoUsuario attribute.
     */
    public void setTipoUsuario(byte tipoUsuario) {
        this.tipoUsuario = tipoUsuario;
    }

    /**
     * Allows to get the activo attribute value.
     * 
     * @return the activo value.
     */
    public boolean isActivo() {
        return activo;
    }

    /**
     * Allows to set the activo attribute value.
     * 
     * @param activo
     *            new value for activo attribute.
     */
    public void setActivo(boolean activo) {
        this.activo = activo;
    }

    /**
     * 
     * Modificar los valores del usuario.
     * 
     * @param usuario
     *            datos del usuario nuevo.
     */
    public void modificarDatosUsuario(Usuario usuario) {
        this.nombres = usuario.getNombres();
        this.tipoUsuario = usuario.getTipoUsuario();
        this.password = usuario.getPassword();
        this.activo = usuario.isActivo();
    }

    /**
     * TODO doc information expected for getId method.
     *
     * @return
     */
    public char[] getId() {
        // TODO Auto-generated method stub
        return null;
    }
}
